﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using mamnontuoitho7.AppCode;
using System.Data;

namespace mamnontuoitho7.backend
{
    public partial class AdminPage : System.Web.UI.Page
    {
        protected Member _admin = new Member();
        protected General _general = new General();
        private ThumbnailClass _thumbnailClass = new ThumbnailClass();
        protected DataRow _dtrAdmin;

        private String _memberID = "";

        protected void Page_Load(object sender, EventArgs e)
        {

            _memberID = Session["memberID"].ToString();
            //Check Role Admin
            if (_memberID != "" && (ConstantClass.adminRoleList).IndexOf(Session["role"].ToString() + ",") != -1)
            {

                //Logout
                if (Request.QueryString["Process"] != null && Request.QueryString["Process"].ToString() == "Logout")
                {
                    Session["username"] = "";
                    Session["role"] = "";
                    Session["memberID"] = "";
                    Session["avatar"] = "";

                    Response.Redirect(ConstantClass._errorLoginPage);
                }

                try
                {
                    if (!IsPostBack)
                    {
                        loadAdminInformation(_memberID);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Response.Redirect(ConstantClass._errorAdminPage);
                }
            }
            else
            {
                Response.Redirect(ConstantClass._errorLoginPage);
            }
        }


        /// <summary>
        /// Load teacher information from database
        /// </summary>
        private void loadAdminInformation(String memberID)
        {

            _dtrAdmin = _admin.GetAdminDetails(memberID);

            txtMemberName.Text = _dtrAdmin["MemberName"].ToString();
            txtFullname.Text = _dtrAdmin["FullName"].ToString();
            ddlSex.SelectedValue = _dtrAdmin["Sex"].ToString();
            txtBirthday.Text = _dtrAdmin["Birthday"].ToString();
            txtAddress.Text = _dtrAdmin["Address"].ToString();
            txtEmail.Text = _dtrAdmin["Email"].ToString();
            txtPhone.Text = _dtrAdmin["Phone"].ToString();
            txtCareer.Text = _dtrAdmin["Career"].ToString();
            Session["avatar"] = _dtrAdmin["Avatar"].ToString();
            txtRoleName.Text = _dtrAdmin["RoleName"].ToString();
            imgAdmin.ImageUrl = "../images/avatar/teacher_parents/" + (Session["avatar"].ToString() == "" ? ConstantClass._memberDefaultAvatar : Session["avatar"].ToString());
        }


        /// <summary>
        /// Save update information of teacher
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnEdit_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtMemberName.Text.Trim() == "")
                {
                    lblNotice.Visible = true;
                    lblNotice.Text = "Tên đăng nhập không được để trống.";
                    return;
                }


                if (txtCurrentPassword.Text.Trim() != "")
                {
                    _memberID = Session["memberID"].ToString();
                    //Check current pass
                    bool checkPass = _admin.CheckPass(_memberID, txtCurrentPassword.Text.Trim());
                    if (!checkPass)
                    {
                        lblNotice.Visible = true;
                        lblNotice.Text = "Cột mật khẩu hiện tại không chính xác.";
                        return;
                    }

                    //Test new pass
                    if (txtNewPassword.Text.Trim() != "")
                    {
                        if (txtNewPassword.Text.Trim().Length < 4)
                        {
                            lblNotice.Visible = true;
                            lblNotice.Text = "Mật khẩu mới phải có ít nhất là 4 ký tự.";
                            return;
                        }

                        if (txtNewPassword.Text.Trim() != txtConfirmNewPassword.Text.Trim())
                        {
                            lblNotice.Visible = true;
                            lblNotice.Text = "Mật khẩu mới và Xác nhận mật khẩu không giống nhau.";
                            return;
                        }
                    }

                    //Check and upload Avatar
                    string avatar = txtFullname.Text.Trim() + "-" + _memberID;
                    if (fulAvatar.FileName != "" && fulAvatar.FileName != null)
                    {

                        avatar = _thumbnailClass.UploadImage2(fulAvatar, Request.PhysicalApplicationPath + "images/avatar/teacher_parents/", avatar, 128, 128, Session["avatar"].ToString());

                        if (avatar == "")
                        {
                            lblNotice.Visible = true;
                            lblNotice.Text = "Hình của bạn không thể upload được. File hình chỉ hỗ trợ những file: jpg, jpeg, gif, png, bmp, tiff";
                            return;
                        }
                    }
                    else
                    {
                        avatar = Session["avatar"].ToString();
                    }


                    int checkUpdate = _admin.UpdateAdmin(_memberID,
                                                              txtMemberName.Text.Trim(),
                                                              txtFullname.Text.Trim(),
                                                              ddlSex.SelectedValue,
                                                              txtBirthday.Text.Trim(),
                                                               txtAddress.Text.Trim(),
                                                              txtEmail.Text.Trim(),
                                                              txtPhone.Text.Trim(),
                                                              txtNewPassword.Text.Trim(),
                                                              txtCareer.Text.Trim(),
                                                              avatar);
                    if (checkUpdate == 1)
                    {
                        lblNotice.Visible = true;
                        lblNotice.Text = "Thông tin của bạn đã được cập nhật.";
                        Session["avatar"] = avatar;
                        imgAdmin.ImageUrl = "../images/avatar/teacher_parents/" + avatar;
                        //Response.AddHeader("REFRESH", "0;URL=AdminPage.aspx");

                    }
                    else if (checkUpdate == ConstantClass.duplicateKey)
                    {
                        lblNotice.Visible = true;
                        lblNotice.Text = "Tên đăng nhập này đã có. Xin vui lòng đổi tên khác.";
                    }
                    else
                    {
                        lblNotice.Visible = true;
                        lblNotice.Text = "Có lỗi hệ thống không thể cập nhật được.";
                    }
                }
                else
                {
                    lblNotice.Visible = true;
                    lblNotice.Text = "Phải nhập mật khẩu hiện tại để cập nhật thông tin.";
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                Response.Redirect(ConstantClass._errorAdminPage);
            }

        }


        /// <summary>
        /// Reload teacher information
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnCancle_Click(object sender, EventArgs e)
        {
            try
            {
                loadAdminInformation(Session["memberID"].ToString());
                lblNotice.Visible = false;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Response.Redirect(ConstantClass._errorAdminPage);
            }
        }



    }
}